#ifndef SINGLESCATLAYER_H
#define SINGLESCATLAYER_H

#include "atmoslayer.h"

/******************************************************************
 * SingleScatLayer: caculate single-scattering emergent light
 * recvSolar -> downInResponse
 * You must realize the solarScatCoeff yourself for particalar
 * atmosphere. Default in this SingleScatLayer is isotropic case.
 ******************************************************************/
class SingleScatLayer : public AtmosLayer
{
    Q_OBJECT
public:
    explicit SingleScatLayer(QString layerName, QObject *parent = 0);

signals:

public slots:
    virtual void recvSolar(double intensity,
			   double zenith, double azimuth);


protected slots:
    virtual void downInResponse();

    virtual void solarScatCaculate();
    virtual void solarUpScatCaculate();
    virtual void solarDownScatCaculate();

    virtual void solarScatCoeff(int iThetaS, int iPhiS,
				linearPolar *lightOut);

};

#endif // SINGLESCATLAYER_H
